generating public key